맨위로가기

동시 멀티스레딩

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

동시 멀티스레딩(SMT)은 하나의 CPU 코어에서 여러 스레드를 동시에 실행하는 기술로, 프로세서 내부 실행 유닛의 사용률을 높여 시스템 전체의 성능을 향상시키는 것을 목표로 한다. SMT는 슈퍼스칼라 프로세서의 파이프라인 충전률을 높이기 위해 개발되었으며, 인텔의 하이퍼스레딩 기술(HTT)이 그 예시이다. SMT는 메모리 지연 시간을 숨기고, 효율성을 높이며, 하드웨어 사용량 대비 처리량을 늘리는 데 중점을 둔다. 하지만 공유 자원 사용에 따른 성능 저하나 보안 문제가 발생할 수 있다.

더 읽어볼만한 페이지

  • 플린 분류 - MIMD
    MIMD는 여러 프로세서가 각기 다른 명령어와 데이터를 처리하는 병렬 컴퓨팅 구조로, 공유 메모리 및 분산 메모리 모델로 나뉘며, 높은 병렬성을 요구하는 다양한 분야에 활용되지만 프로그래밍 복잡성 등의 과제를 안고 있다.
  • 플린 분류 - 폰 노이만 구조
    폰 노이만 구조는 CPU, 주소 지정 메모리, 버스를 핵심 요소로 하는 컴퓨터 아키텍처로, 프로그램 내장 방식을 통해 명령어와 데이터를 동일한 기억 장치에 저장하고 순차적으로 실행하는 특징을 가진다.
  • 스레드 - 멀티스레딩
    멀티스레딩은 프로세스 내에서 여러 스레드를 동시 실행하여 처리 능력을 향상시키는 기술로, 응답성 향상과 자원 공유 등의 장점이 있지만, 자원 간섭과 소프트웨어 복잡성 증가 등의 단점도 존재하며, 다양한 모델과 구현 방식, 스레드 스케줄러, 가상 머신 활성화 가능성 등을 고려해야 한다.
  • 스레드 - 스레드 (컴퓨팅)
    스레드는 프로세스 내에서 실행되는 독립적인 제어 흐름을 가진 실행 단위로, 자원을 공유하며 멀티태스킹 운영체제에서 병행성을 구현하고 프로그램 응답성 및 성능을 향상시키지만 동기화 문제를 야기할 수 있다.
  • 슈퍼스칼라 마이크로프로세서 - 펜티엄 II
    펜티엄 II는 인텔이 펜티엄 프로의 P6 마이크로아키텍처를 기반으로 개발하여 일반 소비자 시장을 공략하기 위해 CPU 코어와 캐시 메모리를 분리하고 슬롯 1 인터페이스를 도입, MMX 명령어 세트 추가, 16비트 코드 성능 개선 등을 특징으로 하는 x86 마이크로프로세서이다.
  • 슈퍼스칼라 마이크로프로세서 - 애슬론
    AMD가 1999년부터 출시한 애슬론은 x86 아키텍처 기반의 데스크톱, 모바일용 마이크로프로세서 제품군으로, 인텔 펜티엄 III에 대항하기 위해 개발되어 K7, K8 등 다양한 아키텍처를 거치며 성능이 향상되었고 슬롯 A에서 소켓 A, 소켓 AM4 등으로 인터페이스가 변경되었다.
동시 멀티스레딩
동시 멀티스레딩 (SMT)
유형하드웨어 멀티스레딩
개발자인텔, IBM, DEC
첫 출시1995년
개요
목표슈퍼스칼라 프로세서의 효율성 향상
작동 방식단일 프로세서 코어에서 여러 독립적인 스레드를 동시에 실행
코어의 실행 자원을 최대한 활용하여 전체 처리량 향상
장점코어 활용도 증가
전체 시스템 성능 향상
자원 공유를 통한 효율 증대
단점스레드 간 자원 경쟁 발생 가능성
소프트웨어 및 운영체제의 지원 필요
코어 복잡성 증가
역사 및 개발
초기 연구1960년대부터 연구 시작
IBM의 System/360 Model 67에서 초기 형태 구현
주요 개발자DEC의 스톰
워싱턴 대학교의 털
인텔
상용화1995년 DEC Alpha 21464 (EV8)에서 처음 제안 (출시되지 않음)
인텔의 Pentium 4에서 하이퍼스레딩 (Hyper-Threading) 기술로 상용화
후속 개발IBM의 POWER5에서 고성능 SMT 구현
다양한 프로세서 아키텍처에서 SMT 기술 채택
작동 원리
핵심 개념단일 물리적 코어를 여러 논리적 코어로 분할
각 논리적 코어가 독립적인 스레드를 실행
코어의 실행 자원 (ALU, FPU 등)을 스레드들이 공유
스케줄링운영체제가 각 스레드를 독립적인 프로세서로 인식
스레드 스케줄링을 통해 자원 할당 및 관리
자원 공유 및 경쟁스레드 간 자원 경쟁 발생 가능
캐시 미스율 증가 및 성능 저하 유발 가능
적절한 자원 관리 및 스케줄링 전략 필요
성능 향상 요인코어 활용도 증가
파이프라인 효율성 향상
명령어 수준 병렬성 (ILP) 증대
구현 방식
하드웨어 지원프로세서 코어 내부에 SMT 로직 구현
레지스터 파일, 명령어 큐, 실행 유닛 등의 자원 공유 및 분할
스레드 컨텍스트 전환 및 관리 기능 제공
소프트웨어 지원운영체제가 SMT를 지원해야 함
스레드 스케줄링 알고리즘 최적화
자원 경쟁 방지 및 우선순위 관리
대표적인 구현인텔의 하이퍼스레딩 (Hyper-Threading)
IBM의 POWER 프로세서의 SMT
AMD의 젠 아키텍처의 SMT
장점 및 단점
장점코어 활용도 극대화
전체 시스템 처리량 향상
추가적인 하드웨어 비용 없이 성능 향상 가능
멀티태스킹 환경에서 응답성 향상
단점스레드 간 자원 경쟁으로 인한 성능 저하 가능성
소프트웨어 및 운영체제의 지원 필요
코어 설계 복잡성 증가
일부 애플리케이션에서는 성능 향상이 미미할 수 있음
활용 분야
서버 및 데이터 센터높은 처리량 요구 사항 충족
가상화 환경에서 효율적인 자원 활용
데스크톱 및 노트북멀티태스킹 및 고성능 애플리케이션 실행
게임 및 멀티미디어 작업 성능 향상
임베디드 시스템전력 효율성을 고려한 성능 향상
실시간 처리 요구 사항 충족
미래 전망
기술 발전 방향코어당 스레드 수 증가
자원 관리 및 스케줄링 알고리즘 개선
전력 효율성 향상
새로운 아키텍처 및 구현 방식 연구
관련 기술과의 융합3D 스택 메모리
이종 컴퓨팅
뉴로모픽 컴퓨팅

2. 용어

멀티스레딩은 선점형 멀티태스킹과 개념이 비슷하지만, 현대의 슈퍼스칼라 프로세서에서 스레드 수준의 실행 단계로 제공된다.[1]

다중 스레딩이라는 용어는 모호한데, 하나의 CPU 코어에서 여러 스레드를 동시에 실행할 수 있을 뿐만 아니라 여러 작업(다른 페이지 테이블, 다른 작업 상태 세그먼트, 다른 보호 링, 다른 I/O 권한 등을 가짐)도 실행할 수 있기 때문이다. 동일한 코어에서 실행되지만 서로 완전히 분리되어 있다.

프로세서 설계에서 온칩 병렬성을 더 적은 자원 요구 사항으로 늘리는 두 가지 방법이 있다. 하나는 명령어 수준 병렬성 (ILP)을 활용하려는 슈퍼스칼라 기술이고, 다른 하나는 스레드 수준 병렬성 (TLP)을 활용하는 멀티스레딩 방식이다.

슈퍼스칼라는 여러 명령어를 동시에 실행하는 것을 의미하며, 칩 수준 멀티스레딩(CMT)은 하나의 프로세서에 위치한 여러 개의 스레드로부터 명령어를 실행하는 동안 여러 개의 명령어를 한꺼번에 실행하는 것을 뜻한다. 하나의 칩 내에서 둘 이상의 스레드를 지원하는 방법에는 다음과 같은 여러 가지가 있다.


  • 인터리빙 멀티스레딩: 서로 다른 스레드의 여러 명령어를 인터리빙 방식으로 발행하며, 이는 시간적 멀티스레딩이라고도 한다. 인터리빙 발행 빈도에 따라 세분화된 멀티스레딩 또는 조립된 멀티스레딩으로 나눌 수 있다. '''세분화된''' 멀티스레딩은 배럴 프로세서에서와 같이 매 사이클마다 다른 스레드에 대한 명령어를 발행하는 반면, '''조립된''' 멀티스레딩은 현재 실행 중인 스레드가 긴 대기 시간 이벤트(페이지 부재 등)를 발생시키는 경우에만 다른 스레드의 명령어를 발행하도록 전환한다. 조립된 멀티스레딩은 스레드 간 문맥 교환이 적은 경우에 더 흔하게 사용된다. 예를 들어, 인텔의 몬테시토 프로세서는 조립된 멀티스레딩을 사용하는 반면, 썬의 울트라SPARC T1은 세분화된 멀티스레딩을 사용한다. 코어당 파이프라인이 하나만 있는 프로세서의 경우 인터리빙 멀티스레딩이 유일한 가능한 방법이다. 사이클당 최대 하나의 명령어만 발행할 수 있기 때문이다.
  • 동시 멀티스레딩(SMT): 한 사이클에 여러 스레드의 여러 명령어를 발행한다. 프로세서는 이를 위해 슈퍼스칼라여야 한다.
  • 칩 레벨 멀티프로세싱(CMP 또는 멀티코어): 둘 이상의 프로세서를 하나의 칩에 통합하며, 각 프로세서는 독립적으로 스레드를 실행한다.
  • 멀티스레드/SMT/CMP의 모든 조합.


동시 멀티 스레딩(SMT)은 다중 스레딩의 두 가지 주요 구현 방식 중 하나이며, 다른 하나는 시간적 멀티스레딩이다. 시간적 멀티스레딩에서는 특정 시간대에 제공된 파이프라인 단계에서 여러 명령어를 지닌 하나의 스레드만 실행할 수 있다. 동시 멀티스레딩에서는 하나 이상의 스레드로부터의 명령어들을 특정 시간대에 제공된 파이프라인 단계에서 실행할 수 있다. 이는 기본 프로세서 구조에 큰 변화를 주지 않아도 이용할 수 있다. 특별히 요구되는 것으로는 한 사이클 안에서 여러 스레드로부터 명령어를 호출할 수 있는 능력과, 여러 개의 스레드로부터 온 데이터를 보유할 수 있는 더 큰 레지스터 파일이 있다. 동시 스레드의 수는 칩 설계자가 결정하지만 칩이 복잡한 까닭으로 현실적으로는 대부분의 SMT에서 최대 두 개까지로 제한을 받는다. 그러나 울트라스팍 T2와 같은 경우 많으면 8개의 스레드를 코어 하나에서 처리할 수 있는 것이 있기는 하다.[1]

이들을 구별하는 주요 요인은 사이클 하나에 얼마나 많은 명령어를 프로세서가 만들어낼 수 있는지, 또 명령어들로부터 얼마나 많은 스레드가 나오는지를 살펴보는 것이다.

예를 들어, 썬 마이크로시스템즈의 울트라스팍 T1(2005년 12월 14일까지는 나이아가라-Niagara-로 알려져 있었음)은 각 코어가 한 번에 하나의 명령어만 만들어낼 수 있었으므로 동시 멀티스레딩이 아닌 세밀한 멀티스레딩 기술을 갖춘 멀티코어 프로세서이다.

3. 역사적 배경

멀티스레딩 CPU는 1950년대부터 존재했지만, 동시 멀티스레딩(SMT)은 1968년 IBM에서 ACS-360 프로젝트의 일환으로 처음 연구되었다.[3] SMT를 채용한 최초의 주요 상용 마이크로프로세서는 DEC에서 개발한 알파 21464 (EV8)였다. 이 프로세서는 캘리포니아 대학교 샌디에이고의 딘 툴슨, 워싱턴 대학교의 수잔 에거스 및 헨리 레비와의 협력을 통해 개발되었다. 그러나 HP가 컴팩을 인수하고, 컴팩이 다시 DEC를 인수하기 직전에 알파 마이크로프로세서 라인이 중단되어 출시되지 못했다. 딘 툴슨의 연구는 인텔 펜티엄 4하이퍼스레딩 버전(코드명 "노스우드", "프레스콧")을 개발하는 데에도 활용되었다.

인텔 펜티엄 4는 2002년에 출시된 3.06GHz 모델부터 SMT를 구현한 최초의 현대 데스크톱 프로세서였으며, 이후 여러 프로세서에 도입되었다. 인텔은 이 기능을 하이퍼스레딩 기술(Hyper-Threading Technology)이라고 부르며, 기본적인 2개의 스레드 SMT 엔진을 제공한다. 인텔은 SMT가 없는 펜티엄 4에 비해 최대 30%의 속도 향상을 주장했지만,[4] 실제 성능 향상은 애플리케이션에 따라 크게 달랐다. 프로세서 자원을 많이 사용하는 두 프로그램을 동시에 실행하면 하이퍼스레딩으로 인해 프로그램 중 하나 또는 둘 다가 약간 느려지는 경우도 있었다.[5] 이는 펜티엄 4의 재생 시스템이 귀중한 실행 리소스를 묶어 대역폭, 캐시, TLB(Translation Lookaside Buffer), 재정렬 버퍼 항목과 같은 리소스에 대한 경쟁을 증가시키고, 두 프로그램 간에 프로세서 리소스를 균등화하여 실행 시간에 영향을 주었기 때문이다. 펜티엄 4 프레스콧 코어는 재생 대기열을 통해 재생 시스템에 필요한 실행 시간을 줄여 성능 저하 문제를 해결했다.[6]

최신 Imagination Technologies(이매지네이션 테크놀로지스)의 MIPS 아키텍처 설계에는 "MIPS MT"라는 SMT 시스템이 포함되어 있다.[7] MIPS MT는 헤비급 가상 처리 요소와 경량 하드웨어 마이크로스레드를 모두 제공한다. RMI Corporation(RMI)는 4개의 스레드를 실행하는 8개의 코어를 기반으로 하는 프로세서 SoC(System-on-a-chip)를 제공하는 최초의 MIPS 벤더였다. 스레드는 각 사이클마다 다른 스레드를 실행할 수 있는 파인 그레인 모드로 실행될 수 있으며, 스레드에 우선순위를 할당할 수도 있었다. Imagination Technologies MIPS CPU는 코어당 2개의 SMT 스레드를 가지고 있다.

IBM의 블루진(Blue Gene)/Q는 4방향 SMT를 가지고 있다.

2004년 5월에 발표된 IBM POWER5는 듀얼 코어 듀얼 칩 모듈(DCM) 또는 쿼드 코어 또는 옥타 코어 멀티 칩 모듈(MCM)으로 제공되며, 각 코어는 2개의 스레드 SMT 엔진을 포함한다. IBM의 구현은 이전 구현보다 더 정교하다. 다양한 스레드에 서로 다른 우선순위를 할당할 수 있으며, 더 파인 그레인 방식이며, SMT 엔진을 동적으로 켜고 끌 수 있어 SMT 프로세서가 성능을 향상시키지 못하는 워크로드를 더 잘 실행할 수 있다. 2010년, IBM은 각 프로세서가 4개의 동시 인텔리전트 스레드를 가진 8개의 코어를 가진 POWER7 프로세서를 기반으로 하는 시스템을 출시했다. 이는 해당 시점에 예약된 프로세스 스레드 수에 따라 1개의 스레드, 2개의 스레드 또는 4개의 스레드 사이에서 스레딩 모드를 전환하여 코어의 사용을 최적화한다. IBM POWER8은 코어당 8개의 지능형 동시 스레드(SMT8)를 가지고 있다.

2013년 z13 프로세서부터 시작하는 IBM Z는 코어당 2개의 스레드(SMT-2)를 가지고 있다.

선 마이크로시스템즈(Sun Microsystems)의 울트라SPARC T1 (2005년 11월 14일 출시 전까지 "Niagara"로 알려짐)과 코드네임(codename) "Rock"(2010년에 취소됨)은 SMT와 CMP 기술을 활용하는 SPARC의 구현으로 알려져 있지만, Niagara는 실제로 파인 그레인 멀티스레딩을 사용한다. 여러 스레드의 명령어가 매 사이클마다 문제 창을 공유하는 SMT와 달리, 프로세서는 매 사이클마다 다음 활성 스레드의 명령어를 발행하기 위해 라운드 로빈 방식을 사용한다. Sun Microsystems의 Rock 프로세서는 파이프라인이 하나 이상인 더 복잡한 코어를 가지고 있다.

오라클(Oracle Corporation) SPARC T3는 코어당 8개의 파인 그레인 스레드를 가지고 있으며, SPARC T4, SPARC T5, SPARC M5, M6 및 M7은 각 코어당 8개의 파인 그레인 스레드를 가지고 있으며, 이 중 2개는 동시에 실행할 수 있다.

후지쯔(Fujitsu) SPARC64 VI는 거친 입자 수직 멀티스레딩(VMT)을 가지고 있으며, SPARC VII 이상은 2방향 SMT를 가지고 있다.

인텔(Intel) 아이테니엄(Itanium) Montecito는 거친 입자 멀티스레딩을 사용하고, Tukwila 이상은 2방향 SMT(듀얼 도메인 멀티스레딩 포함)를 사용한다.

인텔(Intel) 제온 파이(Xeon Phi)는 하드웨어 기반 스레드를 가진 4방향 SMT(시간 분할 멀티스레딩 포함)를 가지고 있다.[8] 2008년에 처음 출시된 인텔 아톰(Intel Atom)은 명령어 재정렬, 추측 실행 또는 레지스터 이름 변경을 지원하지 않으면서 2방향 SMT(하이퍼스레딩으로 판매)를 특징으로 하는 최초의 인텔 제품이다. 인텔은 코어 마이크로아키텍처에서는 부재했던 네할렘 마이크로아키텍처를 통해 하이퍼스레딩을 다시 도입했다.

AMD 불도저 마이크로아키텍처 FlexFPU 및 공유 L2 캐시는 멀티스레드이지만, 모듈의 정수 코어는 단일 스레드이므로 부분적인 SMT 구현일 뿐이다.[9][10]

AMD 젠 마이크로아키텍처는 2방향 SMT를 가지고 있다.

VISC 아키텍처[11][12][13][14]는 ''가상 소프트웨어 계층''(번역 계층)을 사용하여 단일 스레드의 명령어를 ''글로벌 프론트 엔드''로 보낸다. 이 프론트 엔드는 명령어를 ''가상 하드웨어 스레드렛''으로 분할하고, 이 스레드렛은 별도의 가상 코어로 전송된다. 그런 다음 이러한 가상 코어는 사용 가능한 리소스를 모든 물리적 코어로 보낼 수 있다. 여러 가상 코어가 단일 물리적 코어의 재정렬 버퍼에 스레드렛을 푸시할 수 있으며, 이는 여러 스레드렛에서 부분적인 명령어와 데이터를 동시에 실행 포트를 통해 분할할 수 있다. 각 가상 코어는 상대적인 출력의 위치를 추적한다. 이러한 형태의 멀티스레딩은 단일 스레드가 CPU의 모든 리소스를 사용할 수 있도록 함으로써 단일 스레드 성능을 향상시킬 수 있다. 리소스 할당은 거의 단일 사이클 지연 수준(개별 애플리케이션의 필요에 따라 할당 변경에 따라 1~4 사이클)으로 동적이다.

CPU의 성능(처리량) 향상을 위해, 고전적으로는 높은 클럭 속도와 명령 수준 병렬성(ILP)의 실현(수퍼스칼라의 채용, 파이프라인화 등을 통한 IPC의 향상), 캐시의 채용이 이루어졌다.[20] 이들은 동시에 CPU 자원의 낭비를 발생시키고 있었다.[21] 그래서, 스레드 수준 병렬성(TLP)의 개념이 생겨나, TLP는 SMP나 CMP에 의한 병렬화, FGMT와 같은 멀티스레드 기술로 실현되고 있었다. SMT는 그러한 기술에서의 파이프라인 충전률의 낮음을 결점으로 보고, FGMT와 같은 파이프라인 해저드의 은폐 효과를 싱글 스레드 성능을 가능한 한 희생하지 않고, CMP에 비해 적은 칩 면적으로 실현하는 것을 목표로 발명되었다.[22]

4. 현대의 상용 기술로의 도입

인텔 펜티엄 4는 2002년에 출시된 3.06GHz 모델부터 동시 멀티스레딩을 구현한 최초의 현대 데스크톱 프로세서였으며, 이후 여러 프로세서에 도입되었다. 인텔은 이 기능을 하이퍼스레딩 기술(Hyper-Threading Technology)이라고 부르며, 기본적인 2개의 스레드 SMT 엔진을 제공한다. 인텔은 SMT가 없는 펜티엄 4에 비해 최대 30%의 속도 향상을 주장한다.[4] 실제로 나타나는 성능 향상은 애플리케이션에 따라 크게 달라진다. 그러나 프로세서의 모든 주의를 필요로 하는 두 개의 프로그램을 실행하는 경우, 하이퍼스레딩이 켜져 있으면 프로그램 중 하나 또는 둘 다가 약간 느려지는 것처럼 보일 수 있다.[5] 이는 펜티엄 4의 재생 시스템이 귀중한 실행 리소스를 묶어 대역폭, 캐시, TLB(Translation Lookaside Buffer), 재정렬 버퍼 항목과 같은 리소스에 대한 경쟁을 증가시키고, 두 프로그램 간에 프로세서 리소스를 균등화하여 다양한 양의 실행 시간을 추가하기 때문이다. 펜티엄 4 프레스콧 코어는 재생 대기열을 얻어 재생 시스템에 필요한 실행 시간을 줄였다. 이것은 그 성능 저하를 완전히 극복하기에 충분했다.[6]

최신 Imagination Technologies(이매지네이션 테크놀로지스)의 MIPS 아키텍처 설계에는 "MIPS MT"라는 SMT 시스템이 포함되어 있다.[7] MIPS MT는 헤비급 가상 처리 요소와 경량 하드웨어 마이크로스레드를 모두 제공한다. RMI Corporation(RMI)는 쿠퍼티노에 본사를 둔 스타트업으로, 각각 4개의 스레드를 실행하는 8개의 코어를 기반으로 하는 프로세서 SoC(System-on-a-chip)를 제공하는 최초의 MIPS 벤더이다. 스레드는 각 사이클마다 다른 스레드를 실행할 수 있는 파인 그레인 모드로 실행될 수 있다. 스레드에 우선순위를 할당할 수도 있다. Imagination Technologies MIPS CPU는 코어당 2개의 SMT 스레드를 가지고 있다.

IBM의 블루진(Blue Gene)/Q는 4방향 SMT를 가지고 있다.

2004년 5월에 발표된 IBM POWER5는 듀얼 코어 듀얼 칩 모듈(DCM) 또는 쿼드 코어 또는 옥타 코어 멀티 칩 모듈(MCM)으로 제공되며, 각 코어는 2개의 스레드 SMT 엔진을 포함한다. IBM의 구현은 이전 구현보다 더 정교하다. 다양한 스레드에 서로 다른 우선순위를 할당할 수 있으며, 더 파인 그레인 방식이며, SMT 엔진을 동적으로 켜고 끌 수 있어 SMT 프로세서가 성능을 향상시키지 못하는 워크로드를 더 잘 실행할 수 있다. 이것은 IBM의 두 번째로 일반적으로 사용 가능한 하드웨어 멀티스레딩 구현이다. 2010년, IBM은 각 프로세서가 4개의 동시 인텔리전트 스레드를 가진 8개의 코어를 가진 POWER7 프로세서를 기반으로 하는 시스템을 출시했다. 이는 해당 시점에 예약된 프로세스 스레드 수에 따라 1개의 스레드, 2개의 스레드 또는 4개의 스레드 사이에서 스레딩 모드를 전환한다. 이는 최소 응답 시간 또는 최대 처리량을 위해 코어의 사용을 최적화한다. IBM POWER8은 코어당 8개의 지능형 동시 스레드(SMT8)를 가지고 있다.

2013년 z13 프로세서부터 시작하는 IBM Z는 코어당 2개의 스레드(SMT-2)를 가지고 있다.

많은 사람들이 선 마이크로시스템즈(Sun Microsystems)의 울트라SPARC T1 (2005년 11월 14일 출시 전까지 "Niagara"로 알려짐)과 현재는 단종된 프로세서 코드네임(codename) "Rock"(원래 2005년에 발표되었지만 여러 지연 끝에 2010년에 취소됨)이 SMT와 CMP 기술을 거의 전적으로 활용하는 SPARC의 구현이라고 보고했지만, Niagara는 실제로 SMT를 사용하지 않는다. Sun은 이러한 결합된 방식을 "CMT"라고 부르며, 전체 개념을 "처리량 컴퓨팅"이라고 부른다. Niagara는 8개의 코어를 가지고 있지만, 각 코어는 파이프라인이 하나뿐이므로 실제로 파인 그레인 멀티스레딩을 사용한다. 여러 스레드의 명령어가 매 사이클마다 문제 창을 공유하는 SMT와 달리, 프로세서는 매 사이클마다 다음 활성 스레드의 명령어를 발행하기 위해 라운드 로빈 방식을 사용한다. 이는 배럴 프로세서와 더 유사하게 만든다. Sun Microsystems의 Rock 프로세서는 다르다. 파이프라인이 하나 이상인 더 복잡한 코어를 가지고 있다.

오라클(Oracle Corporation) SPARC T3는 코어당 8개의 파인 그레인 스레드를 가지고 있으며, SPARC T4, SPARC T5, SPARC M5, M6 및 M7은 각 코어당 8개의 파인 그레인 스레드를 가지고 있으며, 이 중 2개는 동시에 실행할 수 있다.

후지쯔(Fujitsu) SPARC64 VI는 거친 입자 수직 멀티스레딩(VMT)을 가지고 있으며, SPARC VII 이상은 2방향 SMT를 가지고 있다.

인텔 아이테니엄(Itanium) Montecito는 거친 입자 멀티스레딩을 사용하고, Tukwila 이상은 2방향 SMT(듀얼 도메인 멀티스레딩 포함)를 사용한다.

인텔(Intel) 제온 파이(Xeon Phi)는 일반 하이퍼스레딩과 달리 비활성화할 수 없는 하드웨어 기반 스레드를 가진 4방향 SMT(시간 분할 멀티스레딩 포함)를 가지고 있다.[8] 2008년에 처음 출시된 인텔 아톰(Intel Atom)은 명령어 재정렬, 추측 실행 또는 레지스터 이름 변경을 지원하지 않으면서 2방향 SMT(하이퍼스레딩으로 판매)를 특징으로 하는 최초의 인텔 제품이다. 인텔은 코어 마이크로아키텍처에서는 부재했던 네할렘 마이크로아키텍처를 통해 하이퍼스레딩을 다시 도입했다.

AMD 불도저 마이크로아키텍처 FlexFPU 및 공유 L2 캐시는 멀티스레드이지만, 모듈의 정수 코어는 단일 스레드이므로 부분적인 SMT 구현일 뿐이다.[9][10]

AMD 젠 마이크로아키텍처는 2방향 SMT를 가지고 있다.

5. 작동 원리

멀티스레딩은 선점형 멀티태스킹과 개념이 비슷하지만, 현대의 슈퍼스칼라 프로세서에서 스레드 수준의 실행 단계로 제공된다.

동시 멀티 스레딩(SMT)은 다중 스레딩의 두 가지 주요 구현 방식 중 하나이며, 다른 형태는 시간적 다중 스레딩(슈퍼 스레딩이라고도 함)이다. 시간적 다중 스레딩에서는 주어진 파이프라인 단계에서 한 번에 하나의 명령 스레드만 실행할 수 있다. 동시 멀티스레딩에서는 주어진 파이프라인 단계에서 한 번에 둘 이상의 스레드의 명령을 실행할 수 있다. 이는 기본적인 프로세서 아키텍처를 크게 변경하지 않고 수행된다. 필요한 주요 추가 사항은 사이클에서 여러 스레드에서 명령을 가져올 수 있는 기능과 여러 스레드의 데이터를 저장할 수 있는 더 큰 레지스터 파일이다. 동시 스레드 수는 칩 설계자가 결정한다. CPU 코어당 두 개의 동시 스레드가 일반적이지만, 일부 프로세서는 훨씬 더 많은 스레드를 지원한다.[1]

프로세서 설계에서 온칩 병렬성을 더 적은 자원 요구 사항으로 늘리는 두 가지 방법이 있다. 하나는 명령어 수준 병렬성(ILP)을 활용하려는 슈퍼스칼라 기술이고, 다른 하나는 스레드 수준 병렬성(TLP)을 활용하는 멀티스레딩 방식이다.

슈퍼스칼라는 여러 명령어를 동시에 실행하는 것을 의미하며, 스레드 수준 병렬성(TLP)은 하나의 프로세서 칩 내에서 여러 스레드의 명령어를 동시에 실행한다. 하나의 칩 내에서 둘 이상의 스레드를 지원하는 방법에는 다음과 같은 여러 가지가 있다.


  • 인터리빙 멀티스레딩: 서로 다른 스레드의 여러 명령어를 인터리빙 방식으로 발행하며, 이는 시간적 멀티스레딩이라고도 한다. 인터리빙 발행 빈도에 따라 세분화된 멀티스레딩 또는 조립된 멀티스레딩으로 나눌 수 있다. '''세분화된''' 멀티스레딩은 배럴 프로세서에서와 같이 매 사이클마다 다른 스레드에 대한 명령어를 발행하는 반면, '''조립된''' 멀티스레딩은 현재 실행 중인 스레드가 긴 대기 시간 이벤트(페이지 부재 등)를 발생시키는 경우에만 다른 스레드의 명령어를 발행하도록 전환한다. 조립된 멀티스레딩은 스레드 간 컨텍스트 전환이 적은 경우에 더 흔하게 사용된다. 예를 들어, 인텔의 몬테시토 프로세서는 조립된 멀티스레딩을 사용하는 반면, 썬의 울트라SPARC T1은 세분화된 멀티스레딩을 사용한다. 코어당 파이프라인이 하나만 있는 프로세서의 경우 인터리빙 멀티스레딩이 유일한 가능한 방법이다. 사이클당 최대 하나의 명령어만 발행할 수 있기 때문이다.
  • 동시 멀티스레딩(SMT): 한 사이클에 여러 스레드의 여러 명령어를 발행한다. 프로세서는 이를 위해 슈퍼스칼라여야 한다.
  • 칩 레벨 멀티프로세싱(CMP 또는 멀티코어): 둘 이상의 프로세서를 하나의 칩에 통합하며, 각 프로세서는 독립적으로 스레드를 실행한다.
  • 멀티스레드/SMT/CMP의 모든 조합.


이를 구별하는 핵심 요소는 프로세서가 한 사이클에 몇 개의 명령어를 발행할 수 있는지와 해당 명령어가 몇 개의 스레드에서 왔는지를 살펴보는 것이다. 예를 들어, 썬 마이크로시스템즈의 울트라SPARC T1은 동시 멀티스레딩 대신 세분화된 멀티스레딩 기술과 결합된 멀티코어 프로세서이다. 각 코어는 한 번에 하나의 명령어만 발행할 수 있기 때문이다.

SMT는 동시에, 즉 같은 클럭 사이클에서 여러 스레드를 구동하는 기술이다. 기존의 멀티 스레딩에서는 해저드나 명령별 또는 클럭별로 실행하는 스레드를 전환하고 있어 여러 스레드를 실행할 수 있는 프로세서에서도, 특정 클럭 사이클에서 실행되고 있는 스레드는 하나였다.

단일 CPU(단일 패키지)에서 동시에 여러 스레드를 처리할 수 있는 것으로 듀얼 코어(2 코어), 쿼드 코어(4 코어) 등과 같은 멀티 코어 기술이 있지만, 이는 하나의 CPU 패키지 안에 2개 이상의 물리 코어가 실장되어 있는 것이며, 하나의 코어 안에서 2개로 나뉘는 동시 멀티 스레딩과는 비슷하면서도 다르다. 동시 멀티 스레딩은 멀티 코어 기술과 병용할 수도 있다.

파이프라인 전체의 명령 채움률을 높이기 위해, 동일한 파이프라인 스테이지에 여러 스레드로부터의 명령을 채워 넣어 시스템 성능(처리량)을 개선하는 것을 목표로 한다.

구현은 각 CPU의 아키텍처에 의존하는 최적의 것이 선택되며, 프로그램 카운터를 여러 개 갖는 단순한 것부터, APIC를 여러 개 구현하여 유사적인 대칭형 멀티프로세싱을 실현하는 것[19], Bulldozer처럼 복잡한 멀티스레딩 기구를 가지고 그 일부로 SMT를 이용하는 것, 하나의 디코더로 여러 스레드의 명령을 동시에 디코딩하는 것까지 다양하다.

스레드의 공급은 일반적으로 OS가 해당 스케줄러에 의해 결정한다. 단일 CPU(단일 코어)에서 여러 스레드를 동시에 실행하여 가상적인 대칭형 멀티프로세싱(SMP) 환경을 제공할 수 있다. 이는 주로 하드웨어 관점에서의 관점이지만, 소프트웨어의 관점에서 이 기술을 보면 여러 실행 스레드가 단일 프로세서를 공유하고 있다고 할 수 있다. SMT를 활성화하면 보이는 프로세서 수(논리 프로세서 수, 논리 코어 수)가 증가한다. 운영체제(OS)가 SMT를 지원함으로써, 응용 소프트웨어에서는 여러 프로세서를 투명하게 사용할 수 있게 된다. SMT에 의해 동시에 구동되는 스레드는 타임 슬라이스로 전환하여 가상으로 동시 실행되는 스레드와 대비하여 하드웨어 스레드라고 불리는 경우가 있다.

SMT의 본래 목적은 프로세서 내부의 각 실행 유닛의 사용률을 높이는 데 있다. 고도로 파이프라인화된 현대의 슈퍼스칼라 프로세서의 실행 상황을 자세히 살펴보면, 프로세서 내부의 실행 유닛 전부가 동작하고 있지 않은 경우가 많다는 것을 알 수 있었다. 즉, 어렵게 프로세서 내부를 고도로 병렬화하고 있음에도 불구하고 병렬성이 최대한 활용되지 않고 있다. 단일 스레드에서는 완전히 사용되지 않는 프로세서 내부 자원을 여러 스레드에 분배함으로써, 프로세서가 본래 가지고 있는 병렬성을 최대한 이끌어내 시스템 전체의 성능을 향상시키려는 것이 SMT의 본래 목적이다. 또한 CGMT나 FGMT와 같이 동시에 멀티스레드를 실행하지 않는 멀티스레딩 기술과 마찬가지로 메모리 레이턴시를 숨기는 효과도 있다.

예를 들어, 정수 연산만 수행하는 스레드 A와 부동 소수점 연산만 수행하는 스레드 B를 동시에 실행하면, 스레드 A는 정수 연산 유닛만 사용하고 스레드 B는 부동 소수점 연산 유닛을 사용하므로 서로 프로세서 내부 자원의 경합이 극히 적어 효율적으로 둘 다 실행할 수 있다고 생각된다. 특히, 부동 소수점 명령은 여러 단계의 파이프라인에서 실행되는 경우가 많아, 실행 파이프라인을 효율적으로 채우는 데 유용한 기술이라고 할 수 있다.

하지만, 아무리 자원 배분을 잘해도 공유 자원의 쟁탈전이 일어나, 어느 한쪽의 스레드가 조정을 위해 대기 상태가 되는 것을 완전히 피할 수 없기 때문에, 2개의 스레드를 동시에 실행하더라도 2배의 시스템 성능을 얻을 수 있는 것은 절대 없다. 즉, 스레드당 성능(싱글 코어 성능)은 SMT를 사용하지 않는 경우와 비교하면 반드시 저하된다. 또한 물리적으로 N 코어를 가지고 있는 경우와 논리적으로 N 코어를 가지고 있는 경우를 비교했을 때, 그 외의 성능이 완전히 같다면, 물리적으로 N 코어를 가지고 있는 쪽이 성능 면에서 유리하다는 것은 변함없다.

6. 장점 및 단점

동시 멀티스레딩(SMT)은 시간적 멀티스레딩과 함께 멀티스레딩의 주요 구현 방식 중 하나이다. SMT는 주어진 파이프라인 단계에서 한 번에 둘 이상의 스레드 명령을 실행할 수 있게 한다. 이를 위해 필요한 주요 변경 사항은 한 사이클에서 여러 스레드의 명령을 가져오는 기능과 여러 스레드의 데이터를 저장할 수 있는 더 큰 레지스터 파일이다. 일반적으로 CPU 코어당 두 개의 동시 스레드를 지원하지만, 일부 프로세서는 더 많은 스레드를 지원하기도 한다.[1]

SMT는 프로세서의 효율성을 높이는 기술이지만, 공유 자원 충돌로 인해 성능이 저하될 수도 있다. SMT의 장단점을 요약하면 다음과 같다.


  • 장점


장점



인텔은 자사의 SMT 기술인 하이퍼 스레딩 기술(HTT)을 통해 서버 애플리케이션에서 CPU 처리량을 최대 30% 향상시킬 수 있다고 밝혔다.[29]


  • 단점


단점


6. 1. 장점

동시 멀티스레딩(SMT)은 프로세서의 효율성을 높이는 기술이다. 주요 장점은 다음과 같다:

  • 메모리 지연 시간 숨김: SMT는 메모리 접근과 같이 시간이 오래 걸리는 작업을 하는 동안 다른 스레드를 실행하여 프로세서가 쉬는 시간을 줄인다.[1]
  • 효율성 향상: SMT는 프로세서 내부의 자원을 최대한 활용하여, 단일 스레드만으로는 완전히 사용되지 않는 부분까지 활용한다.
  • 계산 처리량 증가: 사용되는 하드웨어 양에 비해 더 많은 계산을 처리할 수 있게 된다.[1]
  • 가상 SMP 환경 제공: 단일 CPU에서 여러 스레드를 동시에 실행하여, 마치 여러 개의 CPU가 있는 것처럼(대칭형 멀티프로세싱, SMP) 보이게 한다. 이를 통해 운영체제는 여러 프로세서를 활용할 수 있게 된다.
  • 프로세서 자원 활용 극대화: SMT의 본래 목적은 프로세서 내부의 각 실행 유닛 사용률을 높이는 것이다. 예를 들어 정수 연산만 하는 스레드와 부동 소수점 연산만 하는 스레드를 동시에 실행하면 자원 경합이 적어 효율적이다.[22]


인텔은 자사의 SMT 기술인 하이퍼 스레딩 기술(HTT)을 통해 서버 애플리케이션에서 CPU 처리량을 최대 30% 향상시킬 수 있다고 밝혔다.[29]

하지만 SMT가 항상 성능 향상을 보장하는 것은 아니다. 공유 자원 쟁탈로 인해 스레드당 성능은 SMT를 사용하지 않을 때보다 저하될 수 있다. 또한, 물리적으로 여러 코어가 있는 것이 논리적으로 여러 코어가 있는 것보다 성능 면에서 유리하다.

6. 2. 단점

동시 멀티스레딩(SMT)은 공유 자원이 성능 병목 현상으로 작용하는 경우 성능을 저하시킬 수 있다.[15] SMT가 다양한 상황에서 응용 프로그램에 좋은지 나쁜지를 테스트하고 성능 저하 시 이를 끄는 추가 로직을 삽입해야 하는 것은 소프트웨어 개발자에게 상당한 부담이라는 비평이 있다. 현재 운영 체제는 이러한 목적과 서로 다른 우선 순위의 프로세스가 서로의 자원을 빼앗는 것을 방지하기 위한 편리한 API 호출을 제공하지 못한다.[16]

또한 특정 SMT 구현에는 보안 문제가 있다. NetBurst 기반 프로세서의 인텔 하이퍼스레딩에는 한 응용 프로그램이 캐시 사용을 모니터링하여 동일한 프로세서에서 실행 중인 다른 응용 프로그램에서 암호화 키를 훔칠 수 있는 취약점이 있다.[17] 블랙 햇 2018에서 설명된 HT 구현에 대한 정교한 머신 러닝 공격도 존재한다.[18]

자원 배분을 잘해도 공유 자원의 쟁탈전이 일어나 어느 한쪽의 스레드가 조정을 위해 대기 상태가 되는 것을 완전히 피할 수 없기 때문에, 스레드를 동시에 실행하더라도 시스템 성능이 2배로 증가하지는 않는다. 즉, 스레드당 성능(싱글 코어 성능)은 SMT를 사용하지 않는 경우와 비교하면 반드시 저하된다. 또한 물리적으로 N 코어를 가진 경우와 논리적으로 N 코어를 가진 경우를 비교했을 때, 그 외의 성능이 완전히 같다면 물리적으로 N 코어를 가진 쪽이 성능 면에서 유리하다.

연산 종류에 따라서는 SMT를 활성화했을 때의 성능 향상률보다 전력 소비 증가율이 더 커서 실제 전력 효율이 악화되는 경우도 있다.[30] 전력 소비는 OS의 스레드 스케줄링 알고리즘에도 좌우되며, OS 레이어에서는 물리 코어와 논리 코어의 차이를 고려한 대응과 최적화가 요구된다.[31]

CPU의 물리 코어 수가 증가함에 따라 SMT가 합리적이지 않게 되었다는 지적도 있다.[35] 또한 SMT를 활성화했을 때 스레드 상의 정보를 도용당할 가능성이 있는 취약점 등도 몇 가지 발견되고 있다.[36][37]

참조

[1] 웹사이트 The First Direct Mesh-to-Mesh Photonic Fabric https://hc2023.hotch[...] 2024-02-08
[2] 문서 ASPLOS'11
[3] 웹사이트 End of IBM ACS Project http://people.cs.cle[...] School of Computing, Clemson University 2011-05-25
[4] 간행물 Hyper-Threading Technology Architecture and Microarchitecture http://www.diku.dk/O[...] 2002-02-14
[5] 웹사이트 CPU performance evaluation Pentium 4 2.8 and 3.0 http://users.telenet[...] 2011-04-22
[6] 웹사이트 Replay: Unknown Features of the NetBurst Core. Page 15 http://www.xbitlabs.[...] xbitlabs.com 2011-04-24
[7] 웹사이트 MIPS MT ASE description https://www.imgtec.c[...]
[8] 웹사이트 Best Practice Guide Intel Xeon Phi v1.1 http://www.prace-ri.[...] Partnership for Advanced Computing in Europe 2014-02-18
[9] 웹사이트 AMD Bulldozer Family Module Multithreading http://cdn3.wccftech[...] wccftech 2013-07
[10] 웹사이트 AMD unveils Flex FP https://www.bit-tech[...] bit-tech 2010-10-28
[11] 웹사이트 Soft Machines unveils VISC virtual chip architecture | bit-tech.net https://bit-tech.net[...]
[12] 웹사이트 Examining Soft Machines' Architecture: An Element of VISC to Improving IPC http://www.anandtech[...] AnandTech 2016-02-12
[13] 웹사이트 Next Gen Processor Performance Revealed https://vrworld.com/[...] VR World 2016-02-04
[14] 웹사이트 Architectural Waves http://www.softmachi[...] Soft Machines
[15] 웹사이트 Replay: Unknown Features of the NetBurst Core. Page 15 http://www.xbitlabs.[...] xbitlabs.com 2011-04-24
[16] 웹사이트 How good is hyperthreading? http://agner.org/opt[...]
[17] 웹사이트 Hyper-Threading Considered Harmful http://www.daemonolo[...]
[18] 웹사이트 TLBleed: When Protecting Your CPU Caches is Not Enough https://www.blackhat[...]
[19] 문서 T. Marr et al.,Hyper-Threading Technology Architecture and Microarchitecture,Intel Technology Journal Q1, 2002, HYPER-THREADING TECHNOLOGY
[20] 문서 T. Marr et al.,Hyper-Threading Technology Architecture and Microarchitecture,Intel Technology Journal Q1, 2002, Processor Microarchitecture節第1パラグラフ
[21] 문서 Dean M. Tullsen, Susan J. Eggers, and Henry M. Levy, ISCA96, Simultaneous Multithreading: Maximizing On-Chip Parallelism (1995), Figure 1
[22] 문서 Dean M. Tullsen, Susan J. Eggers, and Henry M. Levy, ISCA96, Simultaneous Multithreading: Maximizing On-Chip Parallelism (1995), Abstract
[23] 웹사이트 PassMark - Intel Core i9-9900K @ 3.60GHz - Price performance comparison https://www.cpubench[...]
[24] 웹사이트 PassMark - Intel Core i7-9700K @ 3.60GHz - Price performance comparison https://www.cpubench[...]
[25] 웹사이트 Benchmark guidelines | cpu-monkey https://www.cpu-monk[...]
[26] 웹사이트 Intel Core i9-9900K Benchmark, Test and specs | cpu-monkey https://www.cpu-monk[...]
[27] 웹사이트 Intel Core i7-9700K Benchmark, Test and specs | cpu-monkey https://www.cpu-monk[...]
[28] 웹사이트 Intel Core i9-9900K vs Intel Core i7-9700K Benchmark, comparison and differences | cpu-monkey https://www.cpu-monk[...]
[29] 웹사이트 ハイパースレッディングとは?- インテル https://www.intel.co[...]
[30] 웹사이트 完全版!! 「Core i7」極限検証 - 内部アーキテクチャ解析編 (23) | マイナビニュース https://news.mynavi.[...]
[31] 웹사이트 マルチコアCPUの消費電力はスケジューリングで変わる? (4/4) https://ascii.jp/ele[...]
[32] 웹사이트 Core iシリーズにも使われる「SMT」の利点と欠点 (4/4) https://ascii.jp/ele[...]
[33] 웹사이트 Intel次期CPU「Alder Lake」はWindows 11に最適化されたスレッド割り当て機能を搭載 - PC Watch https://pc.watch.imp[...]
[34] 웹사이트 HotChips 33で判明したAlder Lakeの詳細 インテル CPUロードマップ (1/3) https://ascii.jp/ele[...]
[35] 웹사이트 一つのCPUで複数のスレッドを実行する技術「SMT」が合理的でなくなってきているとの指摘 - GIGAZINE https://gigazine.net[...]
[36] 뉴스 Hyper-Threading有効時にスレッド上の情報が盗まれる「PortSmash」 ~Intel製品のほかRyzenにも影響か - PC Watch https://pc.watch.imp[...] PC Watch
[37] 뉴스 Ryzen/EPYCの実行ユニットスケジューラに脆弱性が発見される - PC Watch https://pc.watch.imp[...] PC Watch
[38] 논문 Design of an 8-wide superscalar RISC microprocessor with simultaneous multithreading 2002
[39] 뉴스 西川善司の3DゲームファンのためのPS3アーキテクチャ講座 https://game.watch.i[...] game.watch.impress.co.jp
[40] 간행물 日経コンピュータ2007年10月1日号p181 日経コンピュータ 2007-10-01
[41] 뉴스 Ryzenはなぜ「ゲーム性能だけあと一歩」なのか? テストとAMD担当者インタビューからその特性と将来性を本気で考える https://www.4gamer.n[...] 4gamer.net
[42] 뉴스 Arm、自動車向けアプリケーションプロセッサIP「Cortex-A65AE」を発表 | マイナビニュース https://news.mynavi.[...] マイナビニュース
[43] 웹사이트 http://www.theregist[...] theregister.co.uk
[44] 웹사이트 How good is hyperthreading? (하이퍼스레딩이 얼마나 좋은가?) http://agner.org/opt[...] agner.org
[45] 웹사이트 Hyper-Threading Considered Harmful (하이퍼스레딩은 해로운 것으로 생각된다) http://www.daemonolo[...] daemonology.net



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com